#ifndef SPL_DROPSOURCE
#define SPL_DROPSOURCE

class FrameWnd::DropSource : public IDropSource
{
private:
#pragma region Declarations
  LONG m_lRefCount;		// reference count
  FrameWnd *wnd;          // window associated with this dropsource
#pragma endregion

public:
#pragma region IUnknown
  // Retrieves pointers to the supported interfaces on an object
  HRESULT WINAPI QueryInterface(REFIID iid, void **ppvObjectOut);
  // Increments the reference count for an interface on an object
  ULONG WINAPI AddRef();
  // Decrements the reference count for an interface on an object
  ULONG WINAPI Release();
#pragma endregion

#pragma region IDropSource
  // Determines whether a drag-and-drop operation should continue
  HRESULT WINAPI QueryContinueDrag(BOOL fEscapePressed,
    DWORD grfKeyState);
  // Returns:     S_OK, DRAGDROP_S_DROP, DRAGDROP_S_CANCEL

  // Gives visual feedback to an end user during a
  // drag-and-drop operation
  HRESULT WINAPI GiveFeedback(DWORD dwEffect);
#pragma endregion

#pragma region Constructors & Destructors
  DropSource(FrameWnd *wnd);
#pragma endregion
};

#endif